package com.ad.backstage.service;

import com.ad.backstage.model.Merchant;
import com.ad.backstage.model.WxUser;
import com.ad.payload.dto.MerchantDto;
import com.ad.payload.dto.merchant.ItemDetailPageDto;
import com.ad.payload.dto.merchant.MerchantKeyValueAddDto;
import com.ad.payload.dto.merchant.MerchantKeyValueEditDto;
import com.ad.payload.model.*;
import com.ad.payload.vo.DetailKeyValue;
import com.ad.payload.vo.merchant.MerchantVo;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.Valid;
import java.util.List;

/**
 * @author:dxgong
 * @日期 2021/3/27 16:54
 * @注释
 */
public interface IMerchantSystemService {


    /**
     * 根据unionId更新用户
     * @param wxUser pojo
     * */
    ResultBean<Integer> updateWxUserByUnionId(WxUser wxUser);


    /**
     * 根据手机号码更新用户
     * @param wxUser
     * */
    ResultBean<Integer> updateWxUserByPhone(WxUser wxUser);


    /**
     * 根据uuid查询商家
     *
     * @param uuid uuid
     * */
    ResultBean<Merchant> queryMerchantByUuid(String uuid);


    /**
     * 根据 unionId 查询微信用户
     * @param unionId unionId
     * */
    ResultBean<WxUser> queryWxUserByUnionId(String unionId);


    /**
     * 根据 unionId 查询微信用户
     * @param phone phone
     * */
    ResultBean<WxUser> queryWxUserByPhone(String phone);


    /**
     * 根据 unionId 查询微信用户
     * @param serviceOpenId serviceOpenId
     * */
    ResultBean<WxUser> queryWxUserByServiceOpenId(String serviceOpenId);


    /**
     * 添加商家详情
     *
     * @param merchantKeyValueAddDto
     * */
    Long insertMerchantDetail(MerchantKeyValueAddDto merchantKeyValueAddDto);


    /**
     * 修改商家详情
     *
     * @param merchantKeyValueEditDto
     * */
    Long updateMerchantDetail(MerchantKeyValueEditDto merchantKeyValueEditDto);



    /**
     * 删除详情
     *
     * @param idDto
     * */
    Long deleteMerchantDetailById(IdDto idDto);



    /**
     * 查询详情列表
     *
     * @param itemDetailPageDto
     * */
    List<DetailKeyValue> queryDetailKeyValueList(ItemDetailPageDto itemDetailPageDto);

    /**
     * 商家端查询商家基础信息
     * @param uuidDto
     * @return
     */
    MerchantVo queryMerchantInfoByUuid(UuidDto uuidDto);

    /**
     * 商家端:基本信息(删除图片)
     * @param merchantImgDto
     * @return
     */
    Long delPic(@Valid MerchantImgDto merchantImgDto);


    /**
     * 商家端:基本信息(上传图片)
     * @param
     * @return
     */
    String uploadPic(MultipartFile file, String flag, String uuid);

    /**
     * 更新商家信息(商家端查询商家基础信息，点击保存)
     *
     * @param merchantDto
     * */
    Long updateMerchantByUuid(@Valid MerchantDto merchantDto);



    /**
     * 根据Id查询商家一级目录名和二级目录名
     * */
    List<String> queryCategoryByMerchantId(IdDto idDto);


    /**
     * 维护封面图片宽高信息
     * @param uuid
     * @param width
     * @param height
     * @return
     */
    Long updateImageWH(String uuid, Integer width, Integer height);
}
